''' <summary>
''' Esta clase, permite comunicarse con los diferentes objetos de la aplicacion.
''' Deberia mantenerse en un singleton o en alguna variable global y existir durante toda la aplicacion.
''' </summary>
Public Class Resources
    Private _pluginManager As PluginManager
    Private _application As Application
    Private _connectionPool As ConnectionPool
    ''' <summary>
    ''' El PluginManager nos permite interactuar con los diferentes modulos.
    ''' </summary>
    ''' <value></value>
    ''' <returns>PluginManager</returns>
    
    Public Property PluginManager() As PluginManager
        Get
            Return _pluginManager
        End Get
        Set(ByVal value As PluginManager)
            _pluginManager = value
        End Set
    End Property
    ''' <summary>
    ''' Application nos permite comunicarnos con variables de la aplicacion que utilice el modulo de core.
    ''' </summary>
    ''' <value></value>
    ''' <returns>Application</returns>
    
    Public Property Application() As Application
        Get
            Return _application
        End Get
        Set(ByVal value As Application)
            _application = value
        End Set
    End Property
    ''' <summary>
    ''' El ConnectionPool nos provee de un manager de conexiones.
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    
    Public Property ConnectionPool() As ConnectionPool
        Get
            Return _connectionPool
        End Get
        Set(ByVal value As ConnectionPool)
            _connectionPool = value
        End Set
    End Property
    Public Sub New()
        _pluginManager = New PluginManager(Me)
        _application = New Application(Me)
        _connectionPool = New ConnectionPool(Me)
    End Sub
End Class
